#pragma once

//#include <vector>
//#include <map>

typedef enum {
	STARTUP,
	GUI,
	LOADING,
	CANCEL_LOADING,
	SIMULATION,
	SHUTDOWN
} GameState;

class CGame {

public:
	CGame();
	virtual ~CGame();

public:
	bool requestStateChange(GameState state);
	bool lockState();
	bool unlockState();
	GameState getCurrentState();

	void setFrameTime(float ms);
	inline float getFrameTime() { return m_frame_time; }
public:
    static CGame& getSingleton();
    static CGame* getSingletonPtr();
protected:
    
	GameState m_state;
	bool m_locked;
	float m_frame_time;
private:
    static CGame* gGame;
};

